package main

import (
	"bufio"
	"io"
	"os"
)

func main() {
	// 创建文件作为输出
	file, err := os.OpenFile("./data/printer.txt", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, os.ModePerm)
	if err != nil {
		os.Stderr.Write([]byte(err.Error()))
		os.Exit(-1)
	}
	defer file.Close()

	// 创建Writer
	writer := bufio.NewWriter(file)
	// 打印机从标准输入中读取输入
	reader := bufio.NewReader(os.Stdin)
	for {
		str, err := reader.ReadBytes('\n')
		if err != nil {
			if err == io.EOF {
				// 最后一次也要写出
				if _, err := writer.Write(str); err != nil {
					os.Stderr.Write([]byte("ERROR: write bytes failed"))
					os.Exit(-1)
				}
				// 这里一定要将缓冲区刷出
				writer.Flush()
				break
			}
			os.Stderr.Write([]byte("ERROR: read bytes failed"))
			os.Exit(-1)
		}

		if _, err := writer.Write(str); err != nil {
			os.Stderr.Write([]byte("ERROR: write bytes failed"))
			os.Exit(-1)
		}
	}
}
